module Northwind::Channel
  # Клиент канала
  abstract class ChannelClient
    # Отправляет пакет клиенту
    abstract def send
  end

  # Данные запроса, полученные из канала
  record ChannelRequestInfo,
    # Клиента канала
    client : ChannelClient,
    # Запрос от клиента
    data : Bytes

  # Базовый канал связи основного протокола для приёма запросов
  abstract class BaseChannel
    # Запускает работу канала
    abstract def start

    # Читает из канала пакет
    abstract def read : ChannelRequestInfo

    # Возвращает канал для заданных настроек
    def self.get
    end
  end
end
